package review.Day_0402;

/**
 * @author zxc
 * @date 2023/04/02 20:13
 **/
public class Solution03 {
    // 思路 ： 即，统计 喜欢圆形/方形sandwiches的学生数量;
    public int countStudents(int[] students, int[] sandwiches) {
        // 题目要求 ：统计不能够吃到sandwich的学生数量;
        // 限制，在于三明治是以栈的形式来进行拿取，有且仅有栈顶元素被拿取之后，才能够去拿取下一个sandwich;
        int oneSum = 0;
        int twoSum = 0;
        // 遍历students数组，来获取 喜欢圆形/方形sandwiches的学生数量;
        for (int student : students) {
            if(student == 0){
                oneSum++;
            }
            else {
                twoSum++;
            }
        }
        // 遍历sandwiches数组中所有元素;
        for (int sandwich : sandwiches) {
            // 当前栈顶元素 == 0 && oneSum > 0 ,即代表该sandwich是能够被拿取的;
            if(sandwich == 0 && oneSum > 0){
                oneSum--;
            }
            // 当前栈顶元素 == 1 && twoSum > 0 ,即代表该sandwich是能够被拿取的;
            else if(sandwich == 1 && twoSum > 0){
                twoSum--;
            }
            // 其他情况，则代表该栈顶sandwich是不能够被拿取的;
            else {
                break;
            }
        }
        // 直接返回
        return oneSum + twoSum;
    }
}
